/*
 * @Author: hrg
 * @Date: 2023-05-16 09:40:56
 * @LastEditTime: 2023-05-17 14:25:59
 * @FilePath: \study_go\study03\demo\main.go
 * @Description: 错误处理机制
 */
/*
 *                        _oo0oo_
 *                       o8888888o
 *                       88" . "88
 *                       (| -_- |)
 *                       0\  =  /0
 *                     ___/`---'\___
 *                   .' \\|     |// '.
 *                  / \\|||  :  |||// \
 *                 / _||||| -:- |||||- \
 *                |   | \\\  - /// |   |
 *                | \_|  ''\---/''  |_/ |
 *                \  .-\__  '-'  ___/-. /
 *              ___'. .'  /--.--\  `. .'___
 *           ."" '<  `.___\_<|>_/___.' >' "".
 *          | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *          \  \ `_.   \_ __\ /__ _/   .-` /  /
 *      =====`-.____`.___ \_____/___.-`___.-'=====
 *                        `=---='
 *
 *
 *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 *            佛祖保佑     永不宕机     永无BUG
 */
package main

import "fmt"

func main() {
	//	defer+recover	错误捕获

	fmt.Println("运行中...1")
	test()
	fmt.Println("运行中...2")
	fmt.Println("运行中...3")
	fmt.Println("运行中...4")

}

func test() int {
	// defer+recover机制：添加匿名函数,并调用
	defer func() {
		//调用recover内置函数，进行错误的捕获
		err := recover()
		// 如果没有错误就会返回零值，nil
		if err != nil {
			fmt.Println("error", err)
		}
	}()

	num1 := 10
	// 除数不能为0，设置0是为了检验错误捕获机制
	num2 := 0

	re := num1 / num2
	fmt.Println(re)
	return re
}
